package com.shujia.day04;

/*
    工具类：
        在类中一般会都很多 static 修饰的方法，
            该方法可以直接使用类名.方法调用  所有的方法同属于一种操作类型
            比如对于 ArrayTools 包含了有数组经常使用的一些方法形成的集合
        在Java中也提供了一些类似的类 => 如何发现？ => 需要使用API文档 => 解释了当前Java提供类的信息
                类中的属性，方法，解释等等...
                在Java中有 java.util包下包含了大量的工具类
 */
/**
 * 文档注释：
 *  ArrayTools
 *      javadoc -d 目录 -author -version ArrayTool.java
 */
public class ArrayTools {
    public static int binarySearch(int[] intArr, int search) {
        int startIndex = 0;
        int endIndex = intArr.length - 1;
        while (startIndex <= endIndex) {
            int mid = (startIndex + endIndex) / 2;
            if (intArr[mid] == search) {
                return mid;
            }else if (intArr[mid] < search){
                startIndex = mid + 1;
            }else {
                endIndex = mid - 1;
            }
        }
        return -1;
    }

    public static String getArrStr(int[] strArr) {
        String arrStr = "[";
        for (int i = 0; i < strArr.length; i++) {
            if (i != strArr.length - 1) {
                arrStr += strArr[i] + ", ";
            } else {
                arrStr += strArr[i];
            }
        }
        arrStr += "]";
        return arrStr;
    }

    public static int[] bubbleSort(int[] intArr) {
        for (int i = 0; i < intArr.length - 1; i++) {
            for (int j = 0; j < intArr.length - i - 1; j++) {
                if (intArr[j] > intArr[j + 1]) {
                    int tmp = intArr[j + 1];
                    intArr[j + 1] = intArr[j];
                    intArr[j] = tmp;
                }
            }
        }

        return intArr;
    }
}
